package 链表题.删除有序链表重复节点_一个不留;

import 链表题.ListNode;

/**
 * 方法一: 递归调用
 */

public class Test1 {

    public static ListNode deleteDuplicates(ListNode p) {
        if (p == null || p.next == null) {
            return p;
        }
        if (p.val == p.next.val) {
            ListNode x = p.next.next;
            while (x != null && p.val == x.val) { // 这里x != null 必须写在 && 前面先判断, 因为null没有val, 先判断x.val == p.val会报错
                x = x.next;
            }
            return deleteDuplicates(x);
        } else {
            p.next = deleteDuplicates(p.next);
            return p;
        }
    }


    public static void main(String[] args) {
        ListNode o5 = new ListNode(4,null);
        ListNode o4 = new ListNode(4,o5);
        ListNode o3 = new ListNode(3,o4);
        ListNode o2 = new ListNode(1,o3);
        ListNode o1 = new ListNode(0,o2);
        ListNode o = new ListNode(0,o1);
        System.out.println(o);
        System.out.println(deleteDuplicates(o));
    }

}
